gl renderer: Mark pointer textures as used
authorTimm Bäder <mail@baedert.org>
Tue, 5 Mar 2019 08:00:55 +0000 (09:00 +0100)
committerTimm Bäder <mail@baedert.org>
Wed, 6 Mar 2019 05:31:25 +0000 (06:31 +0100)
Otherwise we remove them, causing additional texture uploads.

gsk/gl/gskgldriver.c

index c88b93b52a6364a24df334322daac9312263eaa4..ebc3e21349dfed8bb622c3ce080431a3c79a5e32 100644 (file)
@@ -547,6 +547,25 @@ gsk_gl_driver_get_texture_for_pointer (GskGLDriver *self,
 
   id = GPOINTER_TO_INT (g_hash_table_lookup (self->pointer_textures, pointer));
 
+  if (id != 0)
+    {
+      GHashTableIter iter;
+      gpointer value_p;
+      /* Find the texture in self->textures and mark it used */
+
+      g_hash_table_iter_init (&iter, self->textures);
+      while (g_hash_table_iter_next (&iter, NULL, &value_p))
+        {
+          Texture *t = value_p;
+
+          if (t->texture_id == id)
+            {
+              t->in_use = TRUE;
+              break;
+            }
+        }
+    }
+
   return id;
 }